package model

import java.util.Calendar
import exceptions.FuenteRecabadoraNoRigeEnEsteDepartamentoException

abstract class Empresa {
	val _fuenteRecabadoraDeInformacion: FuenteRecabadoraDeInformacion
	val _departamento : Departamento
	
	def fuenteRecabadoraDeInformacion= _fuenteRecabadoraDeInformacion
	
	def departamento= _departamento
	
	def provincia: Provincia= departamento.provincia 
	
	def gananciasTotales(): Float={
	  todosLosRegistros.foldRight(0f)((r,rs)=>r.ganancias + rs)
	}
	
	def gananciasDelAnho(anho: Integer)= registrosDelAnho(anho).foldRight(0f)((r,rs)=>r.ganancias + rs)
	
	def ventasTotales(): Float={
	   todosLosRegistros.foldRight(0f)((r,rs)=>r.ventas + rs)
	}
	
	def ventasDelAnho(anho: Integer)= registrosDelAnho(anho).foldRight(0f)((r,rs)=>r.ventas + rs)
	
	def tasaDeGanancias(anho: Integer): Float={
		gananciasDelAnho(anho) / ventasDelAnho(anho)
	}

	def esRegistrada():Boolean
	  
	def getRegistro(anho: Integer): Registro
	
	def crearRegistro(anho: Integer,ventas: Float,ganancias: Float,enElAnho:Integer): Unit
		
	def todosLosRegistros():List[Registro]
	
	def registrosDelAnho(anho: Integer)= this.todosLosRegistros.filter(_.anho==anho)

}